﻿Imports BusinessLogicLayer
Imports BE = BusinessEntities

Partial Class Carrito
    Inherits System.Web.UI.Page
    Public TotalReserva As Double = 0
    Public Shared CantidadServicios As Integer
    Dim mensaje As String
    Dim errores As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Poblarcarrito()
            'Ahora nos aseguramos que el control repeater solo se
            'muestre en caso que haya por lo menos un producto
            Dim capanegocios As New CarritoBL
            Dim carrito As New BE.CarritoBE

            'llenamos  las  propiedades
            carrito.codigo = Session("CARRITO")


            'Invocamos al método ConsultarCarrito definido previamente en la clase
            CantidadServicios = capanegocios.ConsultarCarrito(carrito).Tables("ElCarrito").Rows.Count

            If CantidadServicios = 0 Then
                repcarrito.Visible = False
                lblfecha.Visible = False
                lblreserva.Visible = False
                btnpagar.Visible = False
                lblerror.Text = "El carrito de compras está vacío"
            End If
            'Liberamos recursos
            capanegocios = Nothing
        End If
    End Sub

    Sub Poblarcarrito()
        'Si el cliente hace clic al enlace CarritoCompras
        'sin haber elegido ningún servicio
        If Session("CARRITO") = "" Or Session("CARRITO") = Nothing Then
            Response.Redirect("Default.aspx")
        End If

        'Hacemos una referencia a la clase
        Dim capanegocios As New CarritoBL
        Dim carrito As New BE.CarritoBE

        'llenamos  las  propiedades
        carrito.codigo = Session("CARRITO")


        'Invocamos al método ConsultarCarrito definido previamente en la clase
        repcarrito.DataSource = capanegocios.ConsultarCarrito(carrito)
        repcarrito.DataBind()
        'Liberamos recursos
        capanegocios = Nothing

        If TotalReserva > 0 Then
            Session("TotalReserva") = TotalReserva
        End If

        lblfecha.Text = "Fecha: " & Today
        lblreserva.Text = "Reserva: " & carrito.codigo



    End Sub

    Function SubTotalReserva(ByVal Precio As Decimal, ByVal Cantidad As Integer) As Decimal
        Dim Subtotal As Decimal

        Subtotal = Precio * Cantidad
        TotalReserva += Subtotal
        Return Subtotal

    End Function

    Function ImporteTotalReserva() As Decimal

        Return TotalReserva

    End Function

    Sub CambiarCantidad(ByVal Src As Object, ByVal Args As RepeaterCommandEventArgs)
        lblerror.Text = ""
        Dim codigoservicio As String
        codigoservicio = Args.CommandName

        'Hacemos una referencia a la clase
        Dim capanegocios As New CarritoBL
        Dim capanegociosServ As New ServicioBL

        Dim carrito As New BE.CarritoBE
        Dim servicio As New BE.ServicioBE

        'Llenas las propiedades
        'capturar  la sesion del carrito
        carrito.codigo = Session("CARRITO")
        carrito.codigoservicio = codigoservicio 'capturamos codigo del servicio

        servicio.codigo = codigoservicio

        Dim CajaCantidad As TextBox
        CajaCantidad = CType(Args.Item.FindControl("txtcantidad"), TextBox)

        'Dim CantidadItem As New BE.CarritoBE

        If IsNumeric(CajaCantidad.Text) Then
            carrito.cantidad = CajaCantidad.Text
        Else
            carrito.cantidad = 0
        End If



        If carrito.cantidad = 0 Then
            'Invocamos al método QuitarItemdelCarrito definido previamente en la clase
            capanegocios.QuitarItemdelCarrito(carrito)
            Poblarcarrito()

        Else
            'Hay que verificar si existe el stock del servicio
            Dim stock As Integer
            'Invocamos al método DetalleServicio definido previamente en la clase
            stock = capanegociosServ.DetalleServicio(servicio).Tables("ElServicio").Rows(0).Item(6)


            If stock - carrito.cantidad >= 0 Then
                'Invocamos al método ActualizarItemdelCarrito definido previamente en la clase
                capanegocios.ActualizarItemdelCarrito(carrito) '
                Poblarcarrito()
            Else
                'Capturamos el nombre del servicio para informarle al usuario de su falta de stock
                Dim nombreservicio As String
                nombreservicio = servicio.nombreservicio


                'Invocamos al método DetalleServicio definido previamente en la clase
                servicio.nombreservicio = capanegociosServ.DetalleServicio(servicio).Tables("ElServicio").Rows(0).Item(3)
                'Restituimos la cantidad original
                'Dim cantidadoriginal As Integer
                carrito.cantidad = capanegocios.ConsultarItemdelCarrito(carrito).Tables("ItemdelCarrito").Rows(0).Item(3)
                CajaCantidad.Text = carrito.cantidad

                lblerror.Visible = True
                lblerror.Text = "Stock insuficiente del servicio " & servicio.nombreservicio

            End If

        End If

        CantidadServicios = capanegocios.ConsultarCarrito(carrito).Tables("ElCarrito").Rows.Count
        If CantidadServicios = 0 Then

            repcarrito.Visible = False
            lblfecha.Visible = False
            lblreserva.Visible = False
            btnpagar.Visible = False
            lblerror.Text = "El carrito de compras está vacío"
        End If
        'Liberamos recursos
        capanegocios = Nothing
        capanegociosServ = Nothing

    End Sub

    Sub QuitarItemCarrito(ByVal Src As Object, ByVal Args As RepeaterCommandEventArgs)

        Dim codigoservicio As String
        codigoservicio = Args.CommandName

        'Hacemos una referencia a la clase
        Dim capanegocios As New CarritoBL

        Dim carrito As New BE.CarritoBE

        'Llenas las propiedades
        'capturar  la sesion del carrito
        carrito.codigo = Session("CARRITO")
        carrito.codigoservicio = codigoservicio 'capturamos codigo del servicio

        Try
            capanegocios.QuitarItemdelCarrito(carrito)
            Poblarcarrito()

        Catch ex As Exception

            errores = capanegocios.ChapaError
            'Redirigimos  a la página Errores.aspx para mostrar el error
            Response.Redirect("Errores.aspx?id=" & errores)

        Finally
            capanegocios = Nothing
        End Try
    End Sub
    Protected Sub btnpagar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnpagar.Click
        Response.Redirect("Verificarcredito.aspx")
    End Sub
End Class
